package com.ang.propagation.t1;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * required
 * s2如果使用了 required，那么s1如果有事务，s2加入s1的事务，否则自己创建一个事物
 *
 * 如果s2加入s1的事务，同时提交和回滚；
 * 如果s2自己创建事务，回滚的时候，s1不会回滚；
 */
@Component
public class RequiredService2 {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    //默认就是 Propagation.REQUIRED
    @Transactional(propagation = Propagation.REQUIRED)
    public void update(){
        jdbcTemplate.update("update t_user set age = ? where id = ?", 1, 2);
//        int i = 1 / 0;
    }

    //默认就是 Propagation.REQUIRED
    @Transactional(propagation = Propagation.REQUIRED)
    public void updateFor(int i){
        jdbcTemplate.update("update t_user set age = ? where id = ?", 1, 2);
        if(i==2){
//            int j = 1 / 0;
        }
    }
}
